package com.plian.system.service.fr.indicatorsvalue;

import com.plian.system.dto.fr.indicators.IndicatorsValueDTO;
import com.plian.system.vo.fr.indicatorsValue.IndicatorsReportVO;
import com.plian.system.vo.report.ChartsVO;
import com.plian.system.vo.zzd.finance.IndicatorsUnitDetailVO;
import com.plian.system.vo.zzd.finance.IndicatorsYearDataVO;
import com.plian.system.vo.zzd.finance.RevenueMonthDataVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * @description:
 * @author: gangan
 * @create: 2022-05-12 14:07
 */
public interface IIndicatorsReportService {

    /**
     * 获取主要指标值
     * @param indicatorsValueDTO
     * @return
     */
    List<IndicatorsReportVO> financialDataReport(IndicatorsValueDTO indicatorsValueDTO);

//    /** TODO DEL
//     * 综合查询5大指标
//     * @param pd
//     * @return
//     */
//    MainIndicatorsValueVO mainValueReport(PageData pd);

    /**
     * 单个指标图表
     * @param indicatorsValueDTO
     * @return
     */
    ChartsVO singleIndicatorsReport(IndicatorsValueDTO indicatorsValueDTO);


//    /**TODO DEL
//     * 单个指标图表穿透
//     * @param indicatorsValueDTO
//     * @return
//     */
//    List<Object> singleIndicatorsThrough(IndicatorsValueDTO indicatorsValueDTO);

//    PageData getGroupCodesVal(PageData pd);

    /**
     * 获取净资产收益率  默认不处理通商
     * @param orgIds 组织ids 默认group
     * @param reportTime yyyy-MM
     * @return
     */
    BigDecimal getNetAssets(List<String> orgIds, String reportTime);

    /**
     * 根据groupId、singleOrgIds 获取净资产收益率 默认不处理通商
     * @param groupOrgIds 合并组织id
     * @param singleOrgIds 单户组织id
     * @param reportTime yyyy-MM
     * @return
     */
    BigDecimal getNetAssets(List<String> groupOrgIds, List<String> singleOrgIds, String reportTime);

    /**
     * 根据groupId 获取 groupId 净资产收益率 map  默认不处理通商
     * @param orgIds 组织ids 默认group
     * @param reportTime yyyy-MM
     * @return
     */
    List<IndicatorsUnitDetailVO> getGroupNetAssets(List<String> orgIds, String reportTime);

    /**
     * 根据groupId 获取 groupId 净资产收益率 map  默认不处理通商
     * @param groupOrgIds 合并组织id
     * @param singleOrgIds 单户组织id
     * @param reportTime yyyy-MM
     * @return
     */
    List<IndicatorsUnitDetailVO> getAllNetAssets(List<String> groupOrgIds, List<String> singleOrgIds, String reportTime);

    /**
     * 获取净资产收益率
     * @param groupIds
     * @param reportTime
     * @return
     */
    IndicatorsReportVO getNetAssetsReport(List<String> groupIds, String reportTime);


    /**
     * 历年趋势
     *
     * @param code
     * @return
     */
    IndicatorsYearDataVO getIndicatorsYearData(String propertyId, String code, String reportTime);

    /**
     * 获取资产概况指标值
     *
     * @return
     */
    List<IndicatorsReportVO> getAssetIndicators(String propertyId, String reportTime);

    /**
     * 获取经营成果指标值
     *
     * @return
     */
    List<IndicatorsReportVO> getOperatingIndicators(String propertyId, String reportTime);

    /**
     * 本年营收
     *
     * @return
     */
    RevenueMonthDataVO getYearRevenue(String propertyId, String reportTime);
}
